LGF_CalcCRC8Advanced (FC / V3.0.1)


Author: Siemens Industry Support

Short description

The CRC calculation is used for error detection at data transmission. The result of a calculation returns a CRC value via the data sent. The receiver detects a faulty transmission due to the unequal CRC value. The function LGF_CalcCRC8Advanced uses 8 bits as the generator polynomial (mask) and the parameters finalXorValue, reflectInput, and reflectResult.

Block Interface

LGF_CalcCRC8Advanced (FC)
Byte  initValue Ret_Val  Byte
    
Byte  mask   
    
Byte  finalXorValue   
    
Bool  reflectInput   
    
Bool  reflectResult   
    
Array[*] of Byte  array  Array[*] of Byte
       
   

Input parameter

IdentifierData typeDescription
initValueByteStart value with which the calculation is executed.
If there is no need for start value - assign 16#00
maskByteGenerator polynomial with which the calculation is executed.
(Mask / CRC polynomial)
finalXorValueByteValue with which another XOR operation is performed at the end
reflectInputBoolTRUE: the sequence of the bits within the input byte is mirrored. The sequence 0...7 becomes 7...0.
reflectResultBoolTRUE: the order of the bits within the result is mirrored. The sequence 0...7 becomes 7...0.

Output parameter

IdentifierData typeDescription
Ret_ValByteCalculated CRC value (return value of the function).

In/Out parameter

IdentifierData typeDescription
arrayArray[*] of ByteData stream for which the CRC value will be calculated.

Functional description

The function calculates the CRC value from a data stream of any size. The data stream is composed of the individual elements of the array at the input/output parameter array. The start value initValue and the generator polynomial mask can be freely selected.

Via the Boolean input parameters reflectInput and reflectResult, you may optionally mirror the bits of the input data or the CRC value. An XOR operation is also performed with the CRC value at the end and the value finalXorValue.

Note
Various online tools are available for calculating the CRC values. The function of the block was tested with the following online tool, since it supports the input parameters mask (Polynomial) and initValue (Initial Value):
http://www.sunshine2k.de/coding/javascript/crc/crc_js.html

Change log

Version & DateChange description
01.00.00Simatic Systems Support
16.12.2019first release, copied from "LGF_CalcCRC32Advanced"
03.00.00Simatic Systems Support
23.04.2020Set version to V3.0.0, harmonize the version of the whole library
03.00.01Simatic Systems Support
12.11.2020Insert documentation
Assign default start values to optional inputs - `initValue`, `mask`, `finalXorValue`, `reflectInput`, `reflectResult`